resource "aws_rds_cluster"
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/rds_cluster
GPT-4o.icon
1. 基本概要
対象
Amazon Aurora(MySQL/PostgreSQL互換)
RDS Multi-AZ DB クラスター(MySQL/PostgreSQL)
用途
クラスター全体の設定を管理
個々のインスタンス設定は resource "aws_rds_cluster_instance" で管理
非Aurora(MySQL/PostgreSQL/SQL Server など単体インスタンス)の場合は aws_db_instance を使用
注意点
変更はメンテナンスウィンドウで反映される場合が多く、apply_immediately で即時適用可(ただし短時間のダウンタイムあり)
ユーザー名やパスワードは Terraform の state ファイルに平文で保存される
IAM ロールの関連付けは iam_roles 属性か aws_rds_cluster_role_association のどちらか一方で管理
2. 主なユースケース例
Aurora MySQL / PostgreSQL
通常のプロビジョンド(固定サイズ)クラスター
Serverless v2(柔軟なキャパシティ調整)
Multi-AZ DB クラスター
高可用性のため AZ 間レプリケーション
engine, storage_type, allocated_storage, iops, db_cluster_instance_class など必須
Secrets Manager 連携
manage_master_user_password = true にすると RDS がマスターパスワードを Secrets Manager で管理
スナップショットや PITR(ポイントインタイムリカバリ)
snapshot_identifier や restore_to_point_in_time を使用
3. 代表的な重要パラメータ
基本設定
cluster_identifier / cluster_identifier_prefix
engine / engine_version / engine_mode
availability_zones(最大3つ)
database_name, master_username, master_password
可用性・パフォーマンス
backup_retention_period, preferred_backup_window
performance_insights_enabled, performance_insights_kms_key_id
enabled_cloudwatch_logs_exports
セキュリティ
storage_encrypted, kms_key_id
vpc_security_group_ids, db_subnet_group_name
スケーリング
Serverless v1: scaling_configuration
Serverless v2: serverlessv2_scaling_configuration
削除保護・スナップショット
deletion_protection, skip_final_snapshot, final_snapshot_identifier
4. サーバーレス v2 の特徴
engine_mode = "provisioned" + serverlessv2_scaling_configuration
最小・最大キャパシティを 0.5 単位で設定可能
待機時間後に自動停止も設定可(seconds_until_auto_pause)
5. その他のポイント
変更適用の挙動
デフォルトは次回メンテナンスウィンドウ
apply_immediately = true で即時反映(短時間停止あり)
グローバルクラスター
aws_rds_global_cluster と組み合わせてマルチリージョン展開
S3 インポート
Aurora エンジン限定で S3 バックアップから初期化可能